<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      /*
        promise状态
        1、pending[待定]初始状态 不做改变
        2、fulfilled/resolve[实现]操作成功
        3、rejected[被否决]操作失败

        promise状态改变后不可逆
        promise不是异步的只要创建promise对象就会立刻执行里面代码
        */
      const p = new Promise(function (resolve, reject) {
        setTimeout(() => {
          //如果成功则通过reslove去改变promise对象的状态
          //pending 变为fulfilled
          let suc = "成功的数据";
          resolve(suc);
          //如果失败则通过reject去改变promise对象的状态
          //pending变为rejected
          let err = "失败的数据";
          // reject(err);
          console.log(suc);
        }, 1000);
      });
      console.log(p);
      // 接收两个函数作为参数，分别代表fulfilled（成功）和rejected（失败）
      // .then() 可以返回promise对象链式调用,继承原来的promise状态

      p.then(
        //p的状态为fulfilled执行
        //resolve
        (res) => {
          console.log(res);
        },
        // p的状态为rejected执行
        //reject
        (err) => console.error(err)
      );
    </script>
  </body>
</html>
